package com.ruoyi.electricity.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.time.LocalDate;
import java.util.Date;

/**
 * 该类用于封装电表数据信息，包含电表的基本属性和实时测量数据。
 */
public class ElectricityMeterData {

    /**
     * 电表ID，唯一标识一个电表。
     */
    @JsonProperty("MeterID")
    private int meterID;

    /**
     * 电表名称，例如："灵石一线"，用于识别电表位置或用途。
     */
    @JsonProperty("MeterName")
    private String meterName;

    /**
     * A相电压，单位通常为伏特(V)，表示电表当前监测到的电压值。
     */
    @JsonProperty("Voltage")
    private double voltage;

    /**
     * A相电流，单位通常为安培(A)，表示电表当前监测到的电流强度。
     */
    @JsonProperty("Electric")
    private double electric;

    /**
     * 正向有功功率 FAQ值，可能代表某个特定的电能质量指标或查询值，具体意义需根据上下文确定。
     */
    @JsonProperty("FAQValue")
    private double fAQValue;

    /**
     * 电能 累计有功电能量，单位通常是千瓦时(kWh)，表示从某一起始时间到当前的总消耗/产生电量。
     */
    @JsonProperty("PAEnergy")
    private double pAEnergy;

    /**
     * 再生能量，单位通常是千瓦时(kWh)，指在某些系统中回收利用的能量量。
     */
    @JsonProperty("ReEnergy")
    private double peEnergy;

    /**
     * 功率因数，无单位，范围一般在0到1之间，反映电能使用的效率。
     */
    @JsonProperty("PowerFactor")
    private double powerFactor;

    /**
     * 数据插入时间，记录该条数据被记录到系统中的日期，使用LocalDate以简化日期处理，不包含时间信息。
     */
    @JsonProperty("InsertTime")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    private Date insertTime;

    /**
     * 当日累计有功电能量，单位通常是千瓦时(kWh)，特指当天从零点开始的电能量累计。
     */
    @JsonProperty("PAEnergyToday")
    private double pAEnergyToday;

    public int getMeterID() {
        return meterID;
    }

    public void setMeterID(int meterID) {
        this.meterID = meterID;
    }

    public String getMeterName() {
        return meterName;
    }

    public void setMeterName(String meterName) {
        this.meterName = meterName;
    }

    public double getVoltage() {
        return voltage;
    }

    public void setVoltage(double voltage) {
        this.voltage = voltage;
    }

    public double getElectric() {
        return electric;
    }

    public void setElectric(double electric) {
        this.electric = electric;
    }

    public double getfAQValue() {
        return fAQValue;
    }

    public void setfAQValue(double fAQValue) {
        this.fAQValue = fAQValue;
    }

    public double getpAEnergy() {
        return pAEnergy;
    }

    public void setpAEnergy(double pAEnergy) {
        this.pAEnergy = pAEnergy;
    }

    public double getPeEnergy() {
        return peEnergy;
    }

    public void setPeEnergy(double peEnergy) {
        this.peEnergy = peEnergy;
    }

    public double getPowerFactor() {
        return powerFactor;
    }

    public void setPowerFactor(double powerFactor) {
        this.powerFactor = powerFactor;
    }

    public Date getInsertTime() {
        return insertTime;
    }

    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }

    public double getpAEnergyToday() {
        return pAEnergyToday;
    }

    public void setpAEnergyToday(double pAEnergyToday) {
        this.pAEnergyToday = pAEnergyToday;
    }

    @Override
    public String toString() {
        return "ElectricityMeterData{" +
                "meterID=" + meterID +
                ", meterName='" + meterName + '\'' +
                ", voltage=" + voltage +
                ", electric=" + electric +
                ", fAQValue=" + fAQValue +
                ", pAEnergy=" + pAEnergy +
                ", peEnergy=" + peEnergy +
                ", powerFactor=" + powerFactor +
                ", insertTime=" + insertTime +
                ", pAEnergyToday=" + pAEnergyToday +
                '}';
    }
}
